package com.ruoyi.learnSchedule.service.impl;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.learnSchedule.domain.learnSchedule;
import com.ruoyi.learnSchedule.mapper.learnScheduleMapper;
import com.ruoyi.learnSchedule.service.IlearnScheduleService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Objects;

/**
 * 记录学习进度 Service业务层处理
 *
 * @author 劳雅玲
 * @date 2024-04-26
 */
@Service
public class learnScheduleServiceImpl implements IlearnScheduleService {
    @Autowired
    private learnScheduleMapper learnScheduleMapper;

    /**
     * 查询记录学习进度
     *
     * @param id 记录学习进度 主键
     * @return 记录学习进度
     */
    @Override
    public learnSchedule selectlearnScheduleById(Long id) {
        return learnScheduleMapper.selectlearnScheduleById(id);
    }

    /**
     * 查询记录学习进度 列表
     *
     * @param learnSchedule 记录学习进度
     * @return 记录学习进度
     */
    @Override
    public List<learnSchedule> selectlearnScheduleList(learnSchedule learnSchedule) {
        return learnScheduleMapper.selectlearnScheduleList(learnSchedule);
    }

    /**
     * 新增记录学习进度
     *
     * @param learnSchedule 记录学习进度
     * @return 结果
     */
    @Override
    public int insertlearnSchedule(learnSchedule learnSchedule) {
        learnSchedule.setCreateTime(DateUtils.getNowDate());
        return learnScheduleMapper.insertlearnSchedule(learnSchedule);
    }

    /**
     * 修改记录学习进度
     *
     * @param learnSchedule 记录学习进度
     * @return 结果
     */
    @Override
    public int updatelearnSchedule(learnSchedule learnSchedule) {
        learnSchedule.setUpdateTime(DateUtils.getNowDate());
        return learnScheduleMapper.updatelearnSchedule(learnSchedule);
    }

    /**
     * 批量删除记录学习进度
     *
     * @param ids 需要删除的记录学习进度 主键
     * @return 结果
     */
    @Override
    public int deletelearnScheduleByIds(Long[] ids) {
        return learnScheduleMapper.deletelearnScheduleByIds(ids);
    }

    /**
     * 删除记录学习进度 信息
     *
     * @param id 记录学习进度 主键
     * @return 结果
     */
    @Override
    public int deletelearnScheduleById(Long id) {
        return learnScheduleMapper.deletelearnScheduleById(id);
    }

    @Override
    public int insertOrUpdatelearnSchedule(learnSchedule learnSchedule) {

        // 参数校验
        if (Objects.isNull(learnSchedule.getPostId()) || Objects.isNull(learnSchedule.getUserId())) {
            throw new RuntimeException("postId和userId必传");
        }
        String time = learnSchedule.getBrowseTime();

        // 先查一下有没有浏览记录
        // 根据帖子id和userid进行查找
        learnSchedule.setBrowseTime(null);
        List<com.ruoyi.learnSchedule.domain.learnSchedule> learnSchedules = selectlearnScheduleList(learnSchedule);
        // 如果有没有 就插入
        if (CollectionUtils.isEmpty(learnSchedules)) {
            learnSchedule.setBrowseTime(time);
            return insertlearnSchedule(learnSchedule);
//            return 0;
        }
        // 如果有 就修改
        if (CollectionUtils.isNotEmpty(learnSchedules)) {
            com.ruoyi.learnSchedule.domain.learnSchedule learnSchedule1 = learnSchedules.get(0);
            learnSchedule1.setBrowseTime(learnSchedule.getBrowseTime());
            learnSchedule1.setBrowseTime(time);
            return updatelearnSchedule(learnSchedule1);

        }
        return -1;
    }
}
